Eye diagrams are a conventional format for representing parametric information about signals, and especially digital signals. Various prior art eye diagram testers are known, but we shall call the technique described in xe2x80x9cMETHOD AND APPARATUS FOR PERFORMING EYE DIAGRAM MEASUREMENTSxe2x80x9d and xe2x80x9cCOMPOSITE EYE DIAGRAMSxe2x80x9d (which is the preferred method for use herein), an Eye Diagram Analyzer, or EDA for short.
A modern eye diagram for a digital signal is not so much a trace formed continuously in the time domain (ala an analog oscilloscope), as it is an xe2x80x9ceyexe2x80x9d shape composed of closely spaced points (displayed dots, or illuminated pixels) representing many individual measurement samples (which are (time, voltage) pairs) taken upon separate instances of a signal occurring on a channel of interest, and which were then stored in a memory. Each measurement sample contributes to a displayed pixel. (In a simple case the correspondence is one to one, but the actual case might be many to one or one to many.) The eye shape appears continuous because the collection of pixels is rather dense, and because the signal is sampled at a large number of nearly adjacent locations. Unlike a true continuous technique, however, there may be detached dots that are separated from the main body of the eye shape. (Such detachment is an artifact of sampling.) A further difference with the continuous analog technique is that rare or infrequently occurring events, once sampled, do not appear faint in the display or disappear with the persistence of the CRT""s phosphor. This latter difference is often quite an advantage, since it is often the case that such otherwise xe2x80x9chard to seexe2x80x9d features of the trace are very much of interest.
In an eye diagram, an example of which is shown in FIG. 1, the vertical axis is voltage and the horizontal axis represents the differences in time (i.e., various offsets) between some reference event and the locations for the measurement samples. The reference event: is generally an edge of a clock signal in the system under test; represents directly or through some fixed delay the expected point in time when the value of an applied data signal would be captured by some receiving circuit in an SUT (System Under Test); and, is derived from an application of the SUT""s clock to the Eye Diagram Analyzer. The time axis will generally have enough length to depict one complete eye-shape (cycle of an SUT signal) centered about the reference, with sometimes perhaps several additional eyes (cycles) before and after.
To one not familiar with eye diagrams FIG. 1 looks like a poorly synchronized or unreliably triggered trace for a periodic digital signal. Let us dwell here briefly to dispel any mystery about why an eye diagram is the way it is. To begin with, it is assumed that a (non-return-to-zero) work signal being measured is synchronous with something, typically a system clock. Let us further suppose that work signal transitions are expected to occur on falling edges of the system clock, so that the work signal is expected to be stable for sampling on the rising edge of the system clock. If we always sampled the work signal at the same time (say, at the rising edge of the system clock), then the results would be repeated instances of one point on the work signal. If the work signal always had the same value (a steady one or a steady zero), then those repeated instances would be the same (time, voltage) values, and would contribute multiple instances of the same single point to the eye diagram. But keep these two things in mind: One, we do not always sample at the exact same time, but vary it on either side of the reference, by up to, or even more than, a clock period. Two, the work signal is typically not stuck at some steady value. It is sometimes a one, sometimes a zero, and sometimes it does not transition.
So, if the work signal were stuck at one or zero, then the varying sample times would produce adjacent points forming straight lines at either the voltage for one or for zero. And if the work signal had regular transitions of one zero one zero one zero . . . then the trace would resemble a square wave (as seen on a ""scope). But most work signals are not that regular: they are sometimes high, sometimes low, and sometimes they stay at the same value from clock cycle to clock cycle. So the eye diagram contains the superposition of all the individual oscillographic trace segments of the two straight lines (one for always high, one for always low) and the transitions from high to low and from low to high. For a properly working signal the central region of each eye is empty, since the good signal never transitions except when it is supposed to.
To continue, then, different (X, Y) regions within a (sample) space containing an eye diagram represent different combinations of time and voltage. Assume that the eye diagram is composed of a number of pixels, and temporarily assume that the resolution is such that each different (X, Y) pixel position can represent a different combination of time and voltage (and vice versa), which combinations of time and voltage we shall term xe2x80x9cmeasurement points.xe2x80x9d What the preferred Eye Diagram Analyzer measures is the number of times, out of a counted number of clock cycles, that the signal on the channel being monitored passed through a selected measurement point. Then another measurement point is selected, and the process repeated until there are enough measurement points for all the pixels needed for the display. Points along the visible eye diagram trace describe something about those (time, voltage) combinations that were observed to actually occur in the data signal under test. The value of a (time, voltage) combination is represented by its location, but the color or intensity of the measured result can be determined in a way that assists in appreciating the meaning of the measured data. The range over which the measurement points are varied is called a xe2x80x9csample spacexe2x80x9d and is defined during a measurement set-up operation. And in reality, we define the sample space and the resolution for neighboring measurement points first, start the measurement and then let the analyzer figure out later how to ascribe values to the pixels of the display. The xe2x80x9cdisplayxe2x80x9d is, of course, an arbitrary graphic output device such as a printer or an X Window of some as yet unknown size in a window manager (e.g., X11) for a computer operating system. (A one-to-one correspondence between display pixels and measurement points is not required. It will be appreciated that it is conventional for display systems, such as X Windows, to figure out how to ascribe values to the pixels for an image when the correspondence between the display""s pixel locations and the measurements that are the original image description is not one-to-one.)
Thus it is that a modern eye diagram trace itself is thus not a single time domain waveform (think: xe2x80x98single valued functionxe2x80x99), but is instead equivalent to an accumulation of many such instances; it can present multiple voltage (Y axis) values for a given time value (X axis). So, for example, the upper left-hand region of an eye (see FIG. 1) might represent the combination of an adequate logical one at an adequately early time relative to the SUT""s clock signal, and an eye diagram whose trace passes robustly through that region indicates to us that a signal of interest is generally achieving a proper onset of voltage at a proper time. Furthermore, we note that there are also other regions, say, near the center of an eye, that are not ordinarily transited by the trace, and which if that were indeed to happen, would presumably be an indication of trouble. Thickening of the traces is indicative of jitter, a rounding of a corner is indicative of slow transitions, and so on. An eye diagram by itself cannot reveal in the time domain which isolated instance (cycle) of the data signal caused such an exception, as other types of measurements might, but it does provide timely and valid information about signal integrity within a system as it operates. In particular, by incorporating various rules for determining the intensity and color of the displayed pixels of the eye diagram trace (e.g., very long, perhaps xe2x80x9cinfinitexe2x80x9d, persistence) the eye diagram presents readily seen evidence of infrequently occurring failures or other hard to spot conditions.
The EDA of the incorporated xe2x80x9cMETHOD AND APPARATUS FOR PERFORMING EYE DIAGRAM MEASUREMENTSxe2x80x9d operates by applying the clock signal from the SUT to a comparator circuit whose output is then delayed by a fixed amount, say about a half cycle, or some integral multiple thereof. The delayed clock comparison is then the reference mentioned above, and it used by determining when individually threshold-compared and then delayed data signals (the SUT data channels) are sampled.
This sampling of the individually threshold-compared and then delayed data signals is actually performed twice in rapid succession, a very brief (but selectable) amount of time apart. If these two successive samples are different, then the input signal transitioned through the voltage region of interest, and we call this a hit. This is the manner of sampling that accomplishes the taking of the (time, voltage) pairs that are the basic data of the eye diagram measurement, and it is an alternative to digitizing with a conventional Analog-to-Digital Converter (ADC). We use it because it works at frequencies that are impractical for ADCs.
It is typical for an Eye Diagram Analyzer to perform measurements simultaneously on a plurality of different data signals, which we shall call channels.
Different sampling voltages are obtained by varying the comparison thresholds for the data signals. In one embodiment different times are obtained by varying the amount of delay in the data channel path, while leaving the clock signal path essentially fixed. In another embodiment the delay in the data channels is held constant (and preferably at a low value) and the delay in the clock signal path is varied. Skew between data channels may be removed by various techniques.
An eye diagram, then, is information about signal behavior at various time-voltage (X, Y) combinations. A simple system would be to indicate that the signal was xe2x80x9ctherexe2x80x9d or that it wasn""t. That is, respectively put either an illuminated pixel or a non-illuminated pixel at the various (X, Y) locations for the different instances of xe2x80x9cthere.xe2x80x9d This is about what an analog oscilloscope would do if it were used to create an eye diagram for some signal. However, we would notice that some parts of the trace were brighter than others, and understand that this is a (somewhat useful) artifact caused by finite persistence on the one hand (old stuff goes away) and relative rates of occurrence on the other. That is, the display ends up having an intensity component at each pixel location. This is fine as far as it goes, but we would rather not rely upon the persistence of phosphor for this effect, since the most interesting indications are apt to also be the faintest. Since we are not using an analog scope anyway, and have an instrument (an EDA) with memory (akin to a digital oscilloscope, timing analyzer or logic analyzer), we can gather frequency of occurrence (xe2x80x9cattendancexe2x80x9d?) or degree of similarity (xe2x80x9cdispersionxe2x80x9d?) data and decide after the fact what distinguishing pixel value is to go with each (X, Y) pixel location. Those pixel values can be variations in color, intensity, or both, according to whatever scheme is in use (and there are several). The general idea is that the operator configures the EDA to render the display in a way that makes the condition he is most interested is quite visible, and also such that the eye diagram as a whole is generally easy to interpret. Thus, the reader is reminded that there is usually more going on than simply the presence or absence of dots at some series of (X, Y) locations, and that we often have recourse to the notion of an associated xe2x80x9cpixel valuexe2x80x9d at each (X, Y) position in the display. We shall denote with the symbol xe2x80x9cVxe2x80x9d whatever that xe2x80x9cpixel valuexe2x80x9d is. V might be a single item, such as xe2x80x9cONxe2x80x9d or xe2x80x9cOFFxe2x80x9d or it might be an intensity without the notion of color. On the other hand, V will often expand (be rendered) into a whole series of parameters VR, VG, VB, where each such parameter represents the intensity of an associated primary color (whose combination is perceived as a resultant color. In any event, we shall simply write (X, Y, V)i or perhaps (Xi, Yi, Vi), depending upon which notation seems to work best for our needs at the time, and not bother to indicate any associated further expansion of a Vi into its rendered component parameters of VR, VG, VB. (And don""t forget that the (X, Y)i are merely handy display system coordinate substitutes for writing the phrase xe2x80x9c(time, voltage) pairsxe2x80x9d.)
It is often the case that the utility of an eye diagram is needed for characterizing or discovering circumstances that are both erroneous and very occasional. It is also the case that some SUTs have a great many channels that are subject to investigation. Some busses have hundreds of member signals, for example. When faced with such circumstances, the xe2x80x9cluxuryxe2x80x9d of having one individual eye diagram trace per SUT signal becomes an oppressive burden. We might measure it that way, and we can indeed display it that way (with four or maybe eight channels at a time), but we likely will have lost all patience and become disgusted with the whole process before we complete looking at twenty-five or more sets of four or more traces each. Surely that is the wrong way to go about analyzing the data! But on the other hand, automating the investigation is risky. Masking measurements, for example, essentially require that we formally decide ahead of time what is not of interest. The analyzer can apply the mask for us automatically and at great speed, but we will never know for sure that there was not some irregularity in there that met the mask criteria, and yet that would have been of interest to us anyway, if we had only seen it.
Accordingly, another tool is needed to assist in eye diagram analysis for situations involving a large number of channels. The needed tool is the merging into one combined eye diagram presentation of the data for separate xe2x80x9ccomponentxe2x80x9d eye diagram measurements for a useful grouping of related signals. Perhaps this is as simple as taking all the signals together as one single group and producing a single combined eye diagram from the merged data. Say, for example, each separate signal would produce an eye diagram of the same general shape as the other. Then we might simply combine them as if they were being stacked on top of one another, so to speak. That is, create a resulting eye diagram that is the superposition of the component eye diagrams. (The user of a scope might approximate such an outcome by adjustment of vertical position controls to superimpose separate traces.) Alternatively, the signals of interest might, for timing or other signal format reasons, be construed as belonging to some family for one group and to a different family for another group. In that case we are inclined to consider each group separately, and then produce two separate combined eye diagrams, each of which corresponds to one of the groups. In any event, the operator can instruct the EDA to merge the data of individual eye diagrams for a specified plurality (family) of signals into one combined eye diagram. (However, we are going to combine copies of the arithmetic values for the sampled component data, and not mess with any notion of adjusting vertical position!) So now we have a combined eye diagram that probably has fat traces (indicating that, as expected, not all signals have simultaneous and identical rise times, voltage levels, etc.). Independent of that, we now expect that, having merged everything together, if there is something unusual going on, even if only occasionally for just one channel, we will, in principle, be able to see it. (Assuming, of course, that we do not implement some notion of short persistence.) Another assumption in this description is that the collection of data points comprising each of the component eye diagrams has the same general meaning, or type of rule for interpretation, as do the collections of data points in each of the other component eye diagrams.
We shall term such a combined eye diagram, created from the merging of data for individual component eye diagrams, a xe2x80x9ccompositexe2x80x9d eye diagram.
In particular, then, an eye diagram analyzer can assign a plurality of SUT data signals to be members of a labeled group of channels for an eye diagram analyzer. There may be a plurality of such groups. In addition to a superposition in an (X, Y) display space of the various i-many (X, Y, V)-valued pixels for individual component eye diagrams associated with that group, other measured data for those pixels within a group can be merged in various different modes to produce corresponding composite eye diagram presentations. A central issue is to decide how to combine Vi from one component eye diagram with the corresponding Vi of another component eye diagram. They are combined to produce corresponding xe2x80x9cdensitiesxe2x80x9d Di of some sort, and we can write either (Xi, Yi, Di) or simply (X, Y, D)i so long as we remember just what D is. If the Di are rendered with color or intensity, the resulting composite eye diagram includes a representation (the Di) of some density of transitions at each point (Xi, Yi), relative to that group as a whole. The full disaster for the various different types of density is explained in the incorporated xe2x80x9cCOMPOSITE EYE DIAGRAMSxe2x80x9d.
So, we have arrived at the following place. We have an instrument for measuring data signals and producing eye diagrams, which may be individual component eye diagrams for respective individual channels, or one or more composite eye diagrams for one or more respective collections of channels. It will be appreciated that each channel has its own sampling mechanism, so that the entire collection of measurements (the (X, Y)i pairs) is obtained simultaneously. Nevertheless, the sample space of interest and the desired resolution may combine to require i to be in the millions (or more!). Furthermore, the EDA typically does not set up to measure an (X, Y) pair for some value of i and then simply take one measurement before moving on to another (X, Y) value (for the next value of i). Instead, it is typical for the EDA to dwell on a particular (X, Y)i for some time, say a thousand or even a million or so clock cycles. The result is that it may take anywhere from a minute or so to several hours to obtain a complete measurement for the entire sample space.
It is true that partial results acquired to date during a measurement can be displayed as the measurement proceeds. But another look at FIG. 1 reveals that somewhere in the vicinity of 80% of the pixels in the display for the eye diagram are dark, or blank. The implication is that a corresponding amount of time is spent measuring activity at locations where there is no activity to be measured. If we could measure mostly signal activity and avoid measuring inactivity the eye diagram measurement could be performed in much less time. It would therefore be desirable if there were a way to steer the selection of the (X, Y)i so as to first perform measurements where the signal is likely to be found before measuring where it is not likely to be found. This would minimize the amount of time required to perform the measurement to about the lowest practical possible value. The problem is that we don""t really know much about the signal (else we would not be measuring in the first place . . . ). So, the question is: xe2x80x9cHow to do it?xe2x80x9d
A solution to the problem of minimizing the amount of time needed to perform an eye diagram measurement is to first determine at least one location that lies on the eye diagram. This may be done by investigating the (X, Y)i that lie on a xe2x80x9cstartingxe2x80x9d line, say, parallel to the voltage axis and located near the midpoint of the horizontal time axis of the sample space. Such (X, Y)i are selected, preferably at random, until one is found that exhibits signal activity. That location is measured, and also those (X, Y)i that are its eight nearest neighbors (a surrounding layer one deep) or perhaps its twenty-four nearest neighbors (additionally including a second surrounding layer sixteen deep over the first surround layer of eight). These measurement points (the (X, Y)i) are then measured in turn, preferably in random order. The plan is to traverse the eye diagram as it is discovered. To accomplish this, two arrays of bits are established. Within each array the bit locations therein correspond to the various (X, Y)i. One array (E) is used to represent xe2x80x9celigiblexe2x80x9d (X, Y)i, while the other (L) represents xe2x80x9clikelyxe2x80x9d (X, Y)i. At the very start of the measurement all bits in the eligible array E are set and all those in the likely array L are cleared, except that the starting line is established by setting (1s) in L and clearing (0s) in E locations for the corresponding (X, Y)i. Thereafter, locations in L that have Is are measured in a randomly selected order. The presence or absence of activity is duly recorded by the conventional data collection mechanism for use in the resulting eye diagram, and the measured location is then deleted from L by setting the corresponding bit to 0. However, if there was some activity, the nearest neighbors for that (X, Y)i are promoted from E to L. Promotion means that the corresponding bits are cleared in E and set in L. Promotion for non-existent nearest neighbors (because they lie beyond a boundary) may be xe2x80x9cwrappedxe2x80x9d in the appropriate direction to first or last locations in next or preceding rows within the array of the (X, Y)i. When no further set bits remain in L, promote from E to L any remaining locations in E on the horizontal rows corresponding the maximum and minimum voltages thus far discovered for the signal. After that the measurement can stop when no further set bits remain in L, or, if desired, any remaining (i.e., unmeasured) locations identified by E can subsequently be measured by promoting them to L.